package com.lin.cloud.disk.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.lin.cloud.disk.entity.dto.LogicDeleteStatusDTO;
import com.lin.cloud.disk.entity.pojo.Company;
import com.lin.cloud.disk.entity.request.company.GetCompanyPageListRequest;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.Date;
import java.util.List;

/**
 * (Company)表数据库访问层
 *
 * @author ljc
 * @since 2020-12-26 14:08:23
 */
@Repository
public interface CompanyMapper extends BaseMapper<Company> {

    /**
     * 获取公司主体信息
     * @param companyId  公司主体ID
     * @param time      当前时间
     * @return
     */
    Company getAvailableCompanyById(@Param("companyId") Long companyId, @Param("time")Date time);

    /**
     * 逻辑处理删除状态
     * @param deleteStatusDTO
     * @return
     */
    Integer logicDeleteOrRecover(LogicDeleteStatusDTO deleteStatusDTO);

    /**
     * 查询公司主体数据列表
     * @param request
     * @return
     */
    List<Company> getCompanyList(GetCompanyPageListRequest request);

    /**
     * 获取可用的公司
     * @return
     */
    List<Company> getAvailableCompany();

    /**
     * 获取过期的公司列表
     * @param time
     * @return
     */
    List<Long> getExpireCompanyList(@Param("time") Date time);

    /**
     * 设置为已过期
     * @param expireCompanyList
     */
    void setCompanyStatusExpire(@Param("list") List<Long> expireCompanyList);
}